/*
* Copyright (c) 2025 Shenzhen Kaihong Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

const addon = require('./build/Release/ohmw_js_example');

const mwServer = new addon.MWServer(addon.MWServerType.DORA);

if (!mwServer.isRunning(addon.MWServerType.DORA)) {
    console.error('MWServer is not running');
    process.exit(1);
}

let node = new addon.Node('listener', addon.NodeType.DORA);

let success = node.onRecv('data', (data) => {
    console.log('Received data:', data.toString());
});
if (!success) {
    console.error('Failed to register data callback');
    process.exit(1);
}

success = node.onRecvMsg('msg', "std_msgs::String", (msg) => {
    console.log('Received message:', msg.data);
});
if (!success) {
    console.error('Failed to register message callback');
    process.exit(1);
}

async function main() {
    while (mwServer.isRunning(addon.MWServerType.DORA)) {
        await new Promise(resolve => setTimeout(resolve, 1000));
    }
}

main();
